package cn.jhc.social.qq.connect;

import org.springframework.social.connect.support.OAuth2ConnectionFactory;
import org.springframework.social.oauth2.AccessGrant;

import cn.jhc.social.qq.api.QQ;

/**
 * 默认的OAuth2ConnectionFactory并没有实现extractProviderUserId，但留下了扩展接口。
 * QQ的openid可用作providerUserId，不过需要额外操作来获取。
 * @author luyanfei
 *
 */
public class QQConnectionFactory extends OAuth2ConnectionFactory<QQ> {

	public QQConnectionFactory(String appId, String appSecret) {
		super("qq", new QQServiceProvider(appId, appSecret), new QQApiAdapter());
	}

	/**
	 * QQ的openid需要在获得access_token后取得。
	 */
	@Override
	protected String extractProviderUserId(AccessGrant accessGrant) {
		QQ qq = ((QQServiceProvider)getServiceProvider()).getApi(accessGrant.getAccessToken());
		return qq.getOpenid();
	}
}
